Tool-assisted speedrun
Tool-assisted speedrun (сокращенно TAS[1]) — скоростное прохождение игры с использованием встроенных инструментов эмулятора, таких как сохранение и перезапись, замедление и покадровый ввод, просмотр содержимого памяти и анализ исполняемого кода. Идея TAS заключается в том, чтобы превзойти ограничения человеческой реакции и способностей игрока ради достижения теоретических пределов игры, то есть границ реальных возможностей игрового движка. Главной целью работы над TAS является создание развлекательных видеороликов, демонстрирующих полное прохождение выбранной игры.
История
[править | править код]- 1999 год — Andy «Aurican» Kempling выпустил модификацию исходного кода игры Doom, позволившую записывать демо-мувики[2] с замедлением и в несколько заходов. До этого фанаты игры могли делать записи демок лишь в реальном времени. В июне Esko Koskimaa, Peo Sjoblom и Yonatan Donner создали сайт для хранения таких tool-assisted демок, назвав его «Tools-Assisted Speedruns»[3]. С ростом его популярности контент стал пополняться по несколько раз в неделю: новые демо-файлы загружали создатели сайта и посетители.
- 2001 год — сайт переехал на другой хостинг, популярность начала спадать, хотя новые демки продолжали заливаться до ноября 2005 года.
- 2003 год — японец под псевдонимом Morimoto опубликовал в интернете видео с записью скоростного прохождения игры Super Mario Bros. 3[4]. Известная игра была пройдена всего за 11 минут. Прохождение содержало трюки, неизвестные на то время, о которых рядовые пользователи даже не догадывались и почувствовали себя обманутыми, когда выяснилось, что пробег был записан при помощи эмулятора. Однако Joel «Bisqwit» Yliluoma вдохновился на создание собственного сайта «NESvideos», целью которого стало просвещение интернет-общественности на предмет феномена TAS и коллекционирование подобных эмуляторных прохождений игр для платформы NES. Поначалу сайт содержал movie-файлы только для данной платформы, но с ростом сообщества нашлись программисты, добавившие инструменты для записи TAS в эмуляторы других консолей. В 2006-м году название сайта сменилось на «TASVideos». Сайт содержит детальную документацию по предмету и имеет форум, на котором обсуждаются вопросы, связанные с TAS. Принятый язык сайта и форума — английский, однако аудитория сайта многонациональна (есть подфорумы для разных языков).
![](http://upload.wikimedia.org/wikipedia/ru/c/c0/%D0%9D%D0%B5%D0%BF%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.gif)
Реализация
[править | править код]Демо-мувик, записанный при помощи эмулятора, не является видеофайлом. Это лишь записанная во времени последовательность кнопочных нажатий (input log). Если она просматривается на тех же (либо совместимых) версиях эмулятора и РОМа, на которых была записана, ответная реакция игры на вводимые действия игрока будет всегда одной и той же, включая действия игрового ИИ и генерацию псевдослучайных чисел. Вследствие детерминизма игровых движков одинаковые по времени нажатия клавиш дают одинаковый результат.
Цель каждого TAS-ера (создателя TAS-прохождения) — найти оптимальную последовательность нажатий, приводящую к желаемому результату при минимуме временных затрат. Для этого используются следующие приёмы.
Замедление эмуляции
[править | править код]Скорость эмуляции может быть увеличена либо уменьшена. Замедление используется для более точного мониторинга игровых событий во время записи TAS. Таким образом игрок может тщательно продумывать каждое действие, абстрагируясь от скорости своей реакции.
Появление в современных эмуляторах функции frame advance, то есть покадрового[5] продвижения игры, позволило заранее зажимать нужные клавиши для каждого отдельно взятого кадра. Запись TAS в таком режиме позволяет вводить в игру последовательности нажатий, выверенных с точностью до кадра (минимальной неделимой единицы игрового времени).
![](http://upload.wikimedia.org/wikipedia/ru/c/c6/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BC%D0%B0%D0%BD%D0%B8%D0%BF%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D0%B8_%D1%83%D0%B4%D0%B0%D1%87%D0%B5%D0%B9.gif)
Перезапись
[править | править код]Перезапись неэффективно пройденных участков игры осуществляется на основе мгновенных сэйвов — возможности сохранять и загружать игру в любом месте. В итоговый демо-мувик попадает лишь последний вариант прохождения. Таким образом TAS-ер может многократно перепроходить любой участок игры, оптимизируя тактику или экспериментируя с игровым движком. Например, выпадающий из убитого врага приз в ряде игр зависит от того, в какой момент времени враг был убит. На этой особенности основана так называемая манипуляция удачей, то есть косвенное управление значениями ячеек памяти, ответственных за тот или иной элемент геймплея.
Просмотр памяти игры
[править | править код]Просмотр памяти необходим для получения точной информации о различных элементах игры, таких как здоровье/статус персонажей, их координаты и скорость с точностью до дробной доли пикселя. Подобная информация значительно облегчает анализ и принятие игроком оптимальных решений.
Для наблюдения за этими значениями необходимо знать адреса соответствующих ячеек в памяти приставки. В каждой игре они различны. Интересующую ячейку можно найти посредством постепенного отсева. Далее эта ячейка добавляется в список постоянно просматриваемых игроком адресов.
Просмотр памяти в сочетании с замедлением и перезаписью позволяет с предельной точностью контролировать игрового персонажа, а значит, и ход событий всей игры.
Скриптинг
[править | править код]Современные TAS-еры используют широкие возможности скриптового языка Lua[6], чтобы сделать процесс прохождения более простым и удобным. Известные ситуации применения Lua:
- расширенная визуализация полезной информации. Например, отображение на экране хитбоксов персонажей поверх их спрайтов, расчёт и прорисовка траекторий прыжков, дополнительная индикация ключевых значений ячеек памяти,
- программирование макро-последовательностей с целью исключить утомительные повторения действий,
- создание специфических условий для тестирования гипотез об уязвимостях игрового движка,
- поиск оптимальных решений методом перебора.
Просмотр счётчика кадров и счётчика лага
[править | править код]Счётчик кадров помогает отследить, сколько кадров длится то или иное действие, чтобы объективно сравнить разные игровые стратегии, оценивая их с точки зрения затраченного времени. Счётчик лага позволяет выявить закономерности нежелательного замедления игры и выработать оптимальную стратегию минимизации потерянного из-за лага времени.
Индикация нажимаемых клавиш
[править | править код]Просмотр кнопочных нажатий позволяет каждому зрителю TAS-мувиков составить понятие о выполняемых манипуляциях и, зачастую, повторить трюки, не вдаваясь в их суть[7].
Дизассемблирование
[править | править код]![]() | В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Дизассемблирование кода игры открывает доступ к скрытым закономерностям. Работа с встроенным в эмулятор отладчиком, как правило, требует специальных знаний, однако она позволяет разобрать логику игры, понять принципы работы отдельных механизмов (например, алгоритм генерации псевдослучайных чисел, чтобы манипулировать удачей, не прибегая к методу проб и ошибок), обнаружить возможные баги и уязвимости игрового движка.
Дизассемблирование приставочных игр тесно связано со сферой ромхакинга.
Игровые боты
[править | править код]Специально составленные программы-боты, играющие в игру вместо человека, могут использоваться лишь для коротких отрезков времени, так как количество всех возможных нажатий возрастает экспоненциально для каждого следующего кадра мувика. Кроме того, для создания действительно развлекательного видеоматериала необходимо непосредственное участие человека в записи, поэтому программирование ботов для TAS применяется лишь в частных случаях манипуляции.
Особенности и приёмы
[править | править код]Прохождения различаются по поставленным целям и используемым для их достижения приёмам. Вот некоторые из них[8]:
![](http://upload.wikimedia.org/wikipedia/ru/f/f0/Smb_fallfast.gif)
Aims for fastest time
[править | править код]Цель — дойти до финала максимально быстро. Основной тег большинства прохождений. В угоду времени игрок часто пропускает призы, так как подсчёт призовых очков занимает лишнее время, пропускает удары противников, уворачивание от которых займет несколько кадров, уничтожение же противников часто происходит самым неожиданным образом[9].
Multiple games in one movie
[править | править код]Несколько разных игр проходятся одновременно, то есть записывается такой input-файл, который работает в них всех. При перекодировании в видеофайл все прохождения помещают на один экран[10].
Uses warps
[править | править код]По ходу прохождения автор пропускает некоторые уровни с помощью общедоступных приёмов, таких как секретные переходы и бонус-телепорты. Иногда перепрыгнуть через несколько уровней удаётся с помощью ошибки в коде или дизайне карты. Наряду с такими пробегами на сайт обычно выкладывается прохождение игры без пропусков — No warps.
Takes damage to save time
[править | править код]Когда количество энергии перестает зависеть от случая или ошибки, человек может управлять её уровнем в зависимости от поставленной задачи. Почти в любой игре есть участки, которые дольше проходятся, если беречь энергию. TAS-ер обменивает резерв энергии на время, тонко рассчитывая, в каком месте её можно сэкономить, а в каком с большей пользой потратить.
Manipulates luck
[править | править код]![]() | В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Дословно — манипуляция удачей. Достаточно сложная техника, подразумевающая понимание логики игры. Так как всякое значение всякой ячейки памяти строго детерминировано, есть возможность управлять тем, что обычный игрок посчитает случайным элементом. Само по себе управление этими элементами не так сложно, как нахождение фактора, влияющего на них.
![](http://upload.wikimedia.org/wikipedia/ru/b/b0/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D0%B2_%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D1%81%D1%82%D0%BE%D0%BB%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%B8%D0%B9_%28collision_detection%29.gif)
Abuses programming errors (Heavy glitch abuse)
[править | править код]Для ускорения прохождения TAS-еры нередко пользуются ошибками разработчиков (дисбаланс геймплея, недогляд тестеров, баги программистов). Такие ошибки происходят из-за сильной ограниченности возможностей консоли.
На примере платформы NES, для того, чтобы разгрузить память, разработчики упрощают проверки, совершаемые игрой. Если персонаж начнёт идти в стену, стена будет его отталкивать от себя, не позволяя проникнуть внутрь. Однако, если он уже оказался в этой стене — она начнет выталкивать его в направлении, противоположном движению. А оказаться в ней можно, если не зайти в неё, а, например, запрыгнуть сидя[11].
Иногда такие мувики могут поразить зрителя феерией непонятных событий.[источник не указан 2065 дней] Некоторые спидраны буквально балансируют на грани зависания игры.[источник не указан 2065 дней] Данный класс прохождений подразумевает, что человек управляет глюком, рассчитывая, какое ненормальное поведение игры ему более выгодно: проверяются возможности поведения персонажа для каждого кадра и ответы игрового движка на это поведение[12].
Uses death as shortcut
[править | править код]В некоторых играх персонаж при умирании не отбрасывается в начало уровня. Кроме того, после смерти во многих играх герою даётся неуязвимость на короткое время[13].
One player controls two characters
[править | править код]![]() | В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Один человек контролирует сразу двоих персонажей (иногда и больше — до четырёх). Есть два способа реализации этой идеи, каждая по-своему сложна. Либо обеспечивать главным героям кооперацию, одновременно зажимая клавиши за обоих, либо использовать скрипт multitrack.lua, позволяющий прописать управление для каждого персонажа отдельно примерно на несколько секунд: один стоит на месте, другой движется, и скрипт «запоминает» input, потом игра отматывается назад и прописывается управление для стоявшего персонажа. Сложность в том, что пока второй игрок стоит, поведение врагов одно, а когда он тоже движется, уже другое; приходится вновь корректировать движения первого.[14]
Plays at hardest level
[править | править код]![]() | В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
Чтобы больше заинтересовать зрителей, автор фильма выбирает максимальную сложность. Такое применимо лишь в тех играх, которые становятся объективно сложнее в этом случае. Если же усложнение только увеличивает энергию врагов, либо уменьшает отведённое герою время — оно использоваться не будет.
Эмулируемые системы
[править | править код]Система/консоль | Эмуляторы |
---|---|
NES | FCEUX, BizHawk, FCE Ultra |
Super Nintendo | Snes9x, BizHawk, lsnes |
Virtual Boy | VBjin |
Nintendo 64 | BizHawk, mupen64 |
Game Boy, Game Boy Color, Game Boy Advance | BizHawk, VisualBoyAdvance |
Nintendo DS | DeSmuME |
Playstation | BizHawk, PSXjin, PCSX |
Master System | BizHawk |
Sega Mega Drive | BizHawk, Gens |
Saturn | BizHawk, Yabause |
Arcade, Neo Geo | Final Burn Alpha rerecording |
PC-Engine | BizHawk, PCЕjin, Mednafen |
DOS | JPC-rr |
MSX | OpenMSX |
Windows | Hourglass |
Linux | libTAS |
См. также
[править | править код]Примечания
[править | править код]- ↑ Иногда расшифровывается как tool-assisted superplay.
- ↑ Мувик (англ. movie — кинокартина, фильм) — жаргонное слово, происходящее от названия лог-файла с записью кнопочных нажатий. [1] Архивная копия от 28 ноября 2010 на Wayback Machine
- ↑ Именно так, с ошибкой, название сайта было написано и на его логотипе. Впрочем, авторы сайта отказались её исправлять. Doomworld.com / tas Архивная копия от 13 августа 2001 на Wayback Machine
- ↑ NES Super Mario Bros. 3 (JPN) in 11:03.95 by Morimoto (англ.). TASVideos (20 ноября 2003). Дата обращения: 23 октября 2013. Архивировано 6 октября 2013 года.
- ↑ По стандарту NTSC на одну секунду приходится 60 кадров. Стандарт PAL — 50 кадров в секунду.
- ↑ TASVideos / Lua Scripting . Дата обращения: 15 сентября 2010. Архивировано 28 ноября 2010 года.
- ↑ Пример использования Архивная копия от 30 апреля 2015 на Wayback Machine на YouTube
- ↑ TASVideos / Movie Class Guidelines . Дата обращения: 15 сентября 2010. Архивировано 28 ноября 2010 года.
- ↑ Пример на Youtube.com Архивная копия от 9 сентября 2016 на Wayback Machine — игра Darkwing Duck.
- ↑ Пример на Youtube.com Архивная копия от 1 февраля 2018 на Wayback Machine — игры Mega Man 3, 4, 5 и 6.
- ↑ Архивированная копия . Дата обращения: 12 февраля 2011. Архивировано 12 апреля 2012 года.
- ↑ Пример на Youtube.com Архивная копия от 25 июля 2018 на Wayback Machine — игра Battletoads.
- ↑ Пример на Youtube.com Архивная копия от 12 февраля 2021 на Wayback Machine — игра Chip 'n Dale.
- ↑ Примеры на Youtube.com:
- Два персонажа Архивная копия от 13 ноября 2019 на Wayback Machine — игра Battletoads.
- Три персонажа Архивная копия от 25 июля 2018 на Wayback Machine — игра The Lost Vikings.
- Четыре персонажа Архивная копия от 25 июля 2018 на Wayback Machine — игра Teenage Mutant Ninja Turtles.
- ↑ TASVideos / Emulator Resources . Дата обращения: 20 сентября 2010. Архивировано 12 апреля 2012 года.
Ссылки
[править | править код]- Официальный сайт TASVideos.org Архивная копия от 8 февраля 2010 на Wayback Machine (англ.)
- Проект TAStools Архивная копия от 10 января 2011 на Wayback Machine
- Christopher Hanson. Game Time. Understanding Temporality in Video Games (англ.). — Indiana University Press, 2018. — P. 132. — 296 p. — ISBN 9780253032829.
- James Newman. Playing with Videogames (англ.). — Taylor & Francis, 2008. — P. 140. — 224 p. — ISBN 9781134173013.
- David Snyder. Speedrunning. Interviews with the Quickest Gamers (англ.). — McFarland, Incorporated, Publishers, 2017. — P. 22—23. — 260 p. — ISBN 9781476670805.
- Stephen Totilo. Gamers Divided Over Freakish Feats Achieved With Tool-Assisted Speed Runs . mtv.com (17 апреля 2006). Дата обращения: 4 марта 2022. Архивировано из оригинала 1 октября 2007 года.
Для улучшения этой статьи желательно:
|